package com.mrx.example.model;

import java.lang.reflect.Field;

import com.alibaba.fastjson.JSON;

/**
 * 最基本的 Model 对象, 封装了一些有用的方法。所有 Model 都应该从此类派生
 *
 * @author Mr.X
 */
public abstract class BaseModel {

    /**
     * 将 Model 序列化为 json 字符串
     *
     * @return 序列化后的结果
     */
    public String toJSONString() {
        return JSON.toJSONString(this);
    }

    /**
     * 当前实例是否含有 null 字段
     *
     * @return 如果是, 返回 true
     */
    public boolean hasNull() {
        Field[] fields = this.getClass().getDeclaredFields();
        for (Field field : fields) {
            try {
                field.setAccessible(true);
                if (field.get(this) == null) {
                    return true;
                }
            } catch (IllegalArgumentException | IllegalAccessException e) {
                e.printStackTrace();
                return true;
            }
        }
        return false;
    }
}
